import Header from '@/components/common/Header.vue';
import { request, initBaseUrl, getFullImageUrl } from '../../utils/request';
export default {
	components: {
		Header,
		'uni-icons': '@dcloudio/uni-ui/lib/uni-icons/uni-icons.vue',
		'uni-load-more': '@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue'
	},
	name: 'Home',
	data() {
		return {
			// 顶部 banner 数据
			topBannerList: [
				{
					bg: 'https://via.placeholder.com/300x150?text=Time+Space',
					text: '时空邂逅',
					subtext: '探寻同地点时空邂逅的 ta',
					btnText: ''
				},
				{
					bg: 'https://via.placeholder.com/300x150?text=Publish+Demand',
					text: '发布需求',
					subtext: '发布招募自己心仪的小伙伴~',
					btnText: 'GO!'
				},
				{
					bg: 'https://via.placeholder.com/300x150?text=Ideal+Match',
					text: '理想型匹配',
					subtext: '寻找自己的理想型',
					btnText: ''
				}
			],
			// 谁看过我头像（示例，可替换实际数据）
			viewedAvatars: [
				'https://via.placeholder.com/40',
				'https://via.placeholder.com/40',
				'https://via.placeholder.com/40'
			],
			// tab 切换
			currentTab: 'online',
			// 在线钓友列表数据（接口数据）
			onlineFriendList: [],
			// 招募大厅列表数据（示例，可扩展）
			recruitList: [
				{
					avatar: 'https://via.placeholder.com/60',
					name: '招募用户1',
					suffix: '🎯',
					age: 22,
					height: 172,
					zodiac: '天秤座',
					tags: ['热爱钓鱼', '户外达人', '性格开朗']
				}
			],
			// 排序相关状态
			showSortMenu: false,
			activeSort: 'distance', // 默认距离排序
			sortOptions: {
				distance: '距离排序',
				female: '只看女生',
				male: '只看男生'
			},
			// 地理位置
			latitude: null,
			longitude: null,
			// 加载状态
			loading: false,
			// 分页数据
			page: 1,
			limit: 20,
			hasMore: true
		}
	},
	computed: {
		activeSortOption() {
			return this.sortOptions[this.activeSort];
		},
		filteredFriendList() {
			let list = [...this.onlineFriendList];

			// 根据排序选项过滤数据
			if (this.activeSort === 'female') {
				list = list.filter(item => item.gender === 0); // 0=女
			} else if (this.activeSort === 'male') {
				list = list.filter(item => item.gender === 1); // 1=男
			} else if (this.activeSort === 'distance') {
				// 默认按距离排序
				list.sort((a, b) => a.distance - b.distance);
			}

			return list;
		}
	},
	methods: {
		getFullImageUrl,
		// 调试方法：检查用户媒体数据
		debugUserData() {
			console.log('在线用户列表长度:', this.onlineFriendList.length);
			if (this.onlineFriendList.length > 0) {
				console.log('第一个用户的媒体数据:', this.onlineFriendList[0].media);
			}
		},
		// 顶部 banner 按钮点击事件
		handleBannerBtn(item) {
			// 根据实际需求，比如跳转页面、发请求等
			uni.showToast({
				title: `点击了【${item.text}】的按钮`,
				icon: 'none'
			})
		},
		// 切换 tab
		switchTab(tab) {
			this.currentTab = tab
		},
		// 打招呼事件
		sayHi(friend) {
			uni.showToast({
				title: `向 ${friend.nickname || friend.name} 打招呼啦~`,
				icon: 'none'
			});
		},
		// 处理头像图片加载错误
			handleImageError(friend) {
				friend.avatar = '/static/image/default-avatar.png';
			},
			// 切换排序菜单显示/隐藏
			toggleSortMenu() {
				this.showSortMenu = !this.showSortMenu;
			},
			// 选择排序选项
			selectSortOption(sortType) {
				this.activeSort = sortType;
				this.showSortMenu = false;
				// 重新加载数据
				this.page = 1;
				this.onlineFriendList = [];
				this.hasMore = true;
				this.getNearbyUsers();
			},
			// 播放视频
			playVideo(media) {
				if (media && media.url) {
					uni.navigateTo({
						url: `/pages/videoPlayer/videoPlayer?url=${encodeURIComponent(media.url)}`
					});
				}
			},
			// 预览图片
			previewImage(media, index, friend) {
				if (friend && friend.media && friend.media.length > 0) {
					const images = friend.media
						.filter(item => item.type === 'image')
						.map(item => item.url);
					if (images.length > 0) {
						const currentIndex = friend.media.findIndex((item, i) => i === index && item.type === 'image');
						uni.previewImage({
							current: images[currentIndex >= 0 ? currentIndex : 0],
							urls: images
						});
					}
				}
			},
			// 格式化视频时长
			formatVideoDuration(duration) {
				const minutes = Math.floor(duration / 60);
				const seconds = Math.floor(duration % 60);
				return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
			},
		
		// 获取地理位置
		getLocation() {
			return new Promise((resolve, reject) => {
				uni.getLocation({
					type: 'wgs84',
					success: (res) => {
						this.latitude = res.latitude;
						this.longitude = res.longitude;
						resolve(res);
					},
					fail: (err) => {
						console.error('获取位置失败:', err);
						uni.showToast({
							title: '获取位置失败，请检查定位权限',
							icon: 'none'
						});
						reject(err);
					}
				});
			});
		},
		
		// 获取附近用户列表
		async getNearbyUsers() {
			if (this.loading || !this.hasMore) return;
			
			if (!this.latitude || !this.longitude) {
				try {
					await this.getLocation();
				} catch (error) {
					return;
				}
			}
			
			this.loading = true;
			
			try {
				const params = {
					latitude: this.latitude,
					longitude: this.longitude,
					page: this.page,
					limit: this.limit,
					radius: 5000 // 5公里范围
				};
				
				// 根据排序选项添加性别筛选
				if (this.activeSort === 'female') {
					params.gender = 0; // 只看女生
				} else if (this.activeSort === 'male') {
					params.gender = 1; // 只看男生
				}
				
				const res = await request({
					url: 'Nearby/getNearbyUsers',
					method: 'GET',
					data: params
				});
				
				if (res.code === 1) {
					const newUsers = res.data.list.map(user => {
						// 解析技能标签
						let skills = [];
						if (user.signature) {
							try {
								const skillData = JSON.parse(user.signature);
								if (Array.isArray(skillData)) {
									skills = skillData
									.filter(skill => skill.selected)
									.map(skill => skill.name)
									.slice(0, 3); // 最多显示3个标签
								}
							} catch (e) {
								// 如果不是JSON格式，使用原始字符串
								skills = [user.signature];
							}
						}
						
						// 如果没有选中标签，使用默认提示
						if (skills.length === 0) {
							skills = ['这个人很神秘，什么都没留下~'];
						}
						
						// 处理头像路径
						let avatarUrl = user.avatar || '/static/image/default-avatar.png';
						if (!avatarUrl.startsWith('http') && !avatarUrl.startsWith('//')) {
							avatarUrl = getFullImageUrl(avatarUrl);
						}
						
						// 处理媒体数据
						let media = [];
						if (user.album && Array.isArray(user.album)) {
							media = user.album.map(item => {
								// 处理媒体URL
								let url = item.url;
								if (url && !url.startsWith('http') && !url.startsWith('//')) {
									url = getFullImageUrl(url);
								}
								return {
									type: item.type || 'image',
									url: url,
									duration: item.duration || 0
								};
							});
						}
						
						return {
							id: user.id,
							avatar: avatarUrl,
							name: user.nickname || '匿名用户',
							age: user.age || 0,
							height: 170, // 接口没有身高数据，使用默认值
							zodiac: '未知', // 接口没有星座数据，使用默认值
							tags: skills,
							gender: user.gender || 0,
							height: user.height || 0,
							describe: user.describe || 0,
							isOnline: user.is_online === 1,
							lastActiveTime: user.last_active_time,
							constellation: user.constellation,
							media: media
						};
					});
					
					if (this.page === 1) {
						this.onlineFriendList = newUsers;
					} else {
						this.onlineFriendList = [...this.onlineFriendList, ...newUsers];
					}
					
					this.hasMore = this.page < res.data.pages;
				} else {
					uni.showToast({
						title: res.msg || '获取数据失败',
						icon: 'none'
					});
				}
			} catch (error) {
				console.error('获取附近用户失败:', error);
				uni.showToast({
					title: '网络错误，请稍后重试',
					icon: 'none'
				});
			} finally {
				this.loading = false;
				uni.stopPullDownRefresh();
			}
		},
		
		// 更新用户位置
		async updateUserLocation() {
			if (!this.latitude || !this.longitude) return;
			
			try {
				await request({
					url: 'Nearby/updateLocation',
					method: 'POST',
					data: {
						latitude: this.latitude,
						longitude: this.longitude
					}
				});
			} catch (error) {
				console.error('更新位置失败:', error);
			}
		},
		
		// 下拉刷新
		onPullDownRefresh() {
			this.page = 1;
			this.onlineFriendList = [];
			this.hasMore = true;
			this.getNearbyUsers();
		},
		
		// 上拉加载更多
		onReachBottom() {
			if (this.hasMore && !this.loading) {
				this.page++;
				this.getNearbyUsers();
			}
		}
	},
	// 分享给朋友
	onShareAppMessage() {
		return {
			title: '快来看看附近的小伙伴！',
			path: '/pages/lookingBuddy/lookingBuddy',
			imageUrl: this.getFullImageUrl('/index/logo.jpg')
		};
	},
	// 分享到朋友圈
	onShareTimeline() {
		return {
			title: '发现附近有趣的小伙伴，一起来玩吧！',
			query: 'from=timeline',
			imageUrl: this.getFullImageUrl('/index/logo.jpg')
		};
	},
	onLoad() {
		// 页面加载时初始化
		this.getLocation().then(() => {
			this.getNearbyUsers();
			this.updateUserLocation();
		});
	},
	onShow() {
		// 如果位置已获取，更新用户活跃状态
		if (this.latitude && this.longitude) {
			this.updateUserLocation();
		}
	},
	onHide() {
		// 页面隐藏时清理资源
	},
	onPullDownRefresh() {
		this.onPullDownRefresh();
	},
	onReachBottom() {
		this.onReachBottom();
	}
}